﻿using System;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Ink;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace DomainDriver.Presentation.Silverlight.Base
{
    public interface IStateContainer
    {
        // LATER: Add "event PageRefreshedHandler PageRefreshing;"
        event PageRefreshedHandler PageRefreshed;
        event StateChangeHandler StateChanging;
        event StateChangeHandler StateChanged;

        void NotifyOfPageRefreshed(string pageName, object caller);
        bool HasState(string stateName);
        void AddState(string stateName);
        void RemoveState(string stateName);
        object GetStateValue(string stateName);
        T GetStateValue<T>(string stateName);
        void SetStateValue(string stateName, object stateValue, object caller);
        void SetStateValue<T>(string stateName, T stateValue, object caller);
    }
}